package com.ruoyi.common.utils;

import cn.hutool.core.codec.Base64;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import net.dongliu.requests.Requests;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.util.HashMap;
import java.util.Map;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

//dependencies: net.dongliu.requests,com.alibaba.fastjson
//net.dongliu.requests 这个jar请看 https://blog.csdn.net/dxh0823/article/details/81137400/

public class YdmVerify {
    //国内
    //private static final String CustomUrl = "http://api.jfbym.com/api/YmServer/customApi";
    //国外
    private static final String CustomUrl = "http://api-hk.jfbym.com/api/YmServer/customApi";
    private static final String Token = "tmr0AjrRGvjf5BW85spgbh0G9ivLHGeB0tasrfox9og";
    private static Map headers = new HashMap<>();
    static {
        headers.put("Content-Type", "application/json");
    }

    public static void main(String[] args) throws IOException, InterruptedException {
        File srcFile = new File("d:/1.png");
        BufferedImage img = ImageIO.read(srcFile);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        ImageIO.write(img, "png", byteArrayOutputStream);
        byte[] bytes = byteArrayOutputStream.toByteArray();
        System.out.println(YdmVerify.commonVerify(bytes));
    }

    /// 所有image 参数皆为 图片字节流base64之后的的字符串

    public static String commonVerify(byte[] imageContent) {
        // # 数英汉字类型
        // # 通用数英1-4位 10110
        // # 通用数英5-8位 10111
        // # 通用数英9~11位 10112
        // # 通用数英12位及以上 10113
        // # 通用数英1~6位plus 10103
        // # 定制-数英5位~qcs 9001
        // # 定制-纯数字4位 193
        // # 中文类型
        // # 通用中文字符1~2位 10114
        // # 通用中文字符 3~5位 10115
        // # 通用中文字符6~8位 10116
        //# 通用中文字符9位及以上 10117
        //# 定制-XX西游苦行中文字符 10107
        // # 计算类型
        //# 通用数字计算题 50100
        // # 通用中文计算题 50101
        // # 定制-计算题 cni 452
        String verify_type;
        verify_type = "23051";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("image", Base64.encode(imageContent));
        jsonObject.put("type", verify_type);
        jsonObject.put("token", Token);
        String resp = Requests.post(CustomUrl).headers(headers).jsonBody(jsonObject).send().readToText();
        //System.out.println(resp);
        JSONObject json = JSON.parseObject(resp);
        if (json.getString("code").equals("10000")){
            json = json.getJSONObject("data");
            if (json.containsKey("data")){
                return json.getString("data");
            }
        }
        return "";
    }

}

